package com.ruoyi.verificationDetail.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 核销码明细信息对象 wdm_verification_detail
 * 
 * @author ruoyi
 * @date 2025-11-18
 */
@Data
public class VerificationDetail extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 明细ID */
    private Long detailId;

    /** 关联订单ID */
    @Excel(name = "关联订单ID")
    private Long orderId;

    /** 订单编号 */
    @Excel(name = "订单编号")
    private String orderCode;

    /** 商品ID */
    @Excel(name = "商品ID")
    private Long goodsId;

    /** 规格ID */
    @Excel(name = "规格ID")
    private Long skuId;

    /** 规格名称（如"成人券""儿童券"） */
    private String skuName;

    /** 独立核销码 */
    @Excel(name = "独立核销码")
    private String verificationCode;

    /** 核销码哈希值（防篡改） */
    @Excel(name = "核销码哈希值", readConverterExp = "防=篡改")
    private String verificationHash;

    /** 使用状态（0=待使用 1=已使用 2=已过期） */
    @Excel(name = "使用状态", readConverterExp = "0==待使用,1==已使用,2==已过期")
    private String useStatus;

    /** 核销时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date useTime;

    /** 核销操作人 */
    @Excel(name = "核销操作人")
    private String useBy;

    /** 赠送状态（0=未赠送 1=已赠送 2=转赠中） */
    @Excel(name = "赠送状态", readConverterExp = "0==未赠送,1==已赠送,2==转赠中")
    private String giftedStatus;

    /** 赠送人ID（用户ID） */
    @Excel(name = "赠送人ID", readConverterExp = "用=户ID")
    private Long giverId;

    /** 被赠人用户ID */
    @Excel(name = "被赠人用户ID")
    private Long receiverId;

    /** 赠送时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "赠送时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date giftTime;

    /** 有效期开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validStartTime;

    /** 有效期结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validEndTime;

    /** 删除标志（0存在 2删除） */
    private String delFlag;

    /** 版本号（乐观锁） */
    @Excel(name = "版本号", readConverterExp = "乐=观锁")
    private Long version;

    /** 二维码图片地址 */
    @Excel(name = "二维码图片地址")
    private String qrCodeUrl;

    /** 二维码图片数据（Base64编码） */
    @Excel(name = "二维码图片数据")
    private String qrCodeData;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("detailId", getDetailId())
            .append("orderId", getOrderId())
            .append("orderCode", getOrderCode())
            .append("goodsId", getGoodsId())
            .append("skuId", getSkuId())
            .append("skuName", getSkuName())
            .append("verificationCode", getVerificationCode())
            .append("verificationHash", getVerificationHash())
            .append("useStatus", getUseStatus())
            .append("useTime", getUseTime())
            .append("useBy", getUseBy())
            .append("giftedStatus", getGiftedStatus())
            .append("giverId", getGiverId())
            .append("receiverId", getReceiverId())
            .append("giftTime", getGiftTime())
            .append("validStartTime", getValidStartTime())
            .append("validEndTime", getValidEndTime())
            .append("delFlag", getDelFlag())
            .append("version", getVersion())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("remark", getRemark())
            .append("qrCodeUrl", getQrCodeUrl())
            .append("qrCodeData", getQrCodeData())
            .toString();
    }
}
